AWS CLIのパラメータをJSONファイルで記述する
ども、大瀧です。
AWSのコマンドラインツール AWS CLIがバージョン1.5.5よりJSONファイルからのパラメータ入力をサポートしました。どんな感じで使えるものか、レポートします。
スケルトンJSONの作成
従来、AWS CLIでは--<オプション名>で指定していたパラメータを、あらかじめJSONファイルにまとめて書き実行時に読み込むことができるようになりました。といっても、どのようなJSONファイルを用意すればいいのかわからないので、そのためにJSONのひな形(スケルトン)を作成するためのオプションが用意されています。
パラメータ入力で実行したいコマンドに--generate-cli-skeletonオプションを指定すると、標準出力にJSONが出力されるのでファイルにリダイレクトしましょう。今回はELBを作成するaws elb create-load-balancerコマンドで試してみます。
ikkomon:~ ryuta$ aws elb create-load-balancer --generate-cli-skeleton > skel_elb_create-load-balancer.json ikkomon:~ ryuta$
以下のように、中身が空ないしデフォルト値の入ったひな形ファイルができました。
{ "LoadBalancerName": "", "Listeners": [ { "Protocol": "", "LoadBalancerPort": 0, "InstanceProtocol": "", "InstancePort": 0, "SSLCertificateId": "" } ], "AvailabilityZones": [ "" ], "Subnets": [ "" ], "SecurityGroups": [ "" ], "Scheme": "", "Tags": [ { "Key": "", "Value": "" } ] }
使い回しできるよう、適当にコピーしました。
ikkomon:~ ryuta$ cp skel_elb_create-load-balancer.json testlb_elb_create-load-balancer.json ikkomon:~ ryuta$
JSONパラメータによるAWS CLIの実行
パラメータをざくざく追加していきますが、ひな形には設定できる全パラメータがダンプされているので、A or Bなど排他関係にあるパラメータは片方消さなければならない、デフォルト値がManagement Consoleのものと同一なわけではないなどいい感じにアレンジする必要があります(ニュアンス、伝わったでしょうか(苦笑))。
{ "LoadBalancerName": "testlb", "Listeners": [ { "Protocol": "HTTP", "LoadBalancerPort": 80, "InstanceProtocol": "HTTP", "InstancePort": 80, "SSLCertificateId": "" } ], "AvailabilityZones": [ ], "Subnets": [ "subnet-XXXXXXXX" ], "SecurityGroups": [ "sg-XXXXXXXX" ], "Scheme": "" }
では、実行してみましょう。--cli-input-jsonオプションにfile://をつけてJSONファイルを指定します。
ikkomon:~ ryuta$ aws elb create-load-balancer --cli-input-json file://testlb_elb_create-load-balancer.json testlb-XXXXXXXX.ap-northeast-1.elb.amazonaws.com ikkomon:~ ryuta$
ELBが作成されました!
まとめ
長いパラメータを指定するためにシェルスクリプトで書いて頑張っていたAWS CLIの実行を代用できるのではないでしょうか。ユーザーデータの指定など、便利そうですよね。
AWS CLIをバンバン活用していきましょう!